队列

Java代码

class Queue {
    constructor() {
        this.items = [];
    }

    // 入队
    enqueue(element) {
        this.items.push(element);
    }

    // 出队
    dequeue() {
        if (this.isEmpty()) {
            return "队列为空";
        }
        return this.items.shift();
    }

    // 查看队首元素
    front() {
        if (this.isEmpty()) {
            return "队列为空";
        }
        return this.items[0];
    }

    // 检查队列是否为空
    isEmpty() {
        return this.items.length === 0;
    }

    // 获取队列大小
    size() {
        return this.items.length;
    }

    // 打印队列内容
    print() {
        console.log(this.items.toString());
    }
}

class Stack {
    constructor() {
        this.items = [];
    }

    // 入栈
    push(element) {
        this.items.push(element);
    }

    // 出栈
    pop() {
        if (this.isEmpty()) {
            return "栈为空";
        }
        return this.items.pop();
    }

    // 查看栈顶元素
    peek() {
        if (this.isEmpty()) {
            return "栈为空";
        }
        return this.items[this.items.length - 1];
    }

    // 检查栈是否为空
    isEmpty() {
        return this.items.length === 0;
    }

    // 获取栈大小
    size() {
        return this.items.length;
    }

    // 打印栈内容
    print() {
        console.log(this.items.toString());
    }
}

// 使用栈反转队列的函数
function reverseQueue(queue) {
    const stack = new Stack();

    // 第一步:将队列中所有元素转移到栈中
    while (!queue.isEmpty()) {
        stack.push(queue.dequeue());
    }

    // 第二步:将栈中所有元素转移回队列
    while (!stack.isEmpty()) {
        queue.enqueue(stack.pop());
    }

    return queue;
}

// 测试代码
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);

console.log("原始队列:");
queue.print(); // 输出: 1,2,3,4,5

const reversedQueue = reverseQueue(queue);

console.log("反转后的队列:");
reversedQueue.print(); // 输出: 5,4,3,2,1
            

运行结果

原始队列:
1,2,3,4,5
反转后的队列:
5,4,3,2,1